package com.xiaopeng.common.enumUtil;

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.xiaopeng.common.enumUtil.EnumViewSerialize;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 枚举转换注解
 * Json转换 和 Excel表格导出 枚举值映射
 * @author caixiaopeng
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@JacksonAnnotationsInside   // http接口json转换 Jackson 库中的一个元注解（meta-annotation），它的主要作用是允许创建自定义的组合注解，将多个 Jackson 注解打包在一起复用。
@JsonSerialize(using = EnumViewSerialize.class) // 指定序列化处理器
public @interface EnumView {

    /**
     * 映射枚举
     * @return
     */
    Class<? extends Enum<?>> value();

    /**
     * 枚举的code值 数据库存储值
     */
    String codeField() default "code";

    /**
     * 枚举的name值 表格导出展示内容
     */
    String nameField() default "name";

}
